package com.demo.recycleviewitemdecorationdemo;

import android.graphics.Rect;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;

/**
 * 作者:zwk
 * 联系方式：497981239@qq.com
 * 时间：on 2019/7/12 09:06
 * 功能：
 */
public class GridSpacingItemDecoration extends RecyclerView.ItemDecoration {

	private int spanCount; //列数
	private int spacing; //间隔
	private boolean includeEdge; //是否包含边缘

	public GridSpacingItemDecoration(int spanCount, int spacing, boolean includeEdge) {
		this.spanCount = spanCount;
		this.spacing = spacing;
		this.includeEdge = includeEdge;
	}

	@Override
	public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {

		//这里是关键，需要根据你有几列来判断
		int position = parent.getChildAdapterPosition(view); // item position
		int column = position % spanCount; // item column

		if (includeEdge) {
//			outRect.left = spacing - column * spacing / spanCount; // spacing - column * ((1f / spanCount) * spacing)
//			outRect.right = (column + 1) * spacing / spanCount; // (column + 1) * ((1f / spanCount) * spacing)
//
//			if (position < spanCount) { // top edge
//				outRect.top = spacing;
//			}
//			outRect.bottom = spacing; // item bottom

				outRect.top = spacing;

			if (position % spanCount == 0) {
				outRect.left = spacing;
				outRect.right = spacing / 2;
			} else if (position + 1 % spanCount == 0) {
				outRect.left = spacing / 2;
				outRect.right = 10;
			} else {
				outRect.left = spacing / 2;
				outRect.right = spacing / 2;
			}

		} else {
//			outRect.left = column * spacing / spanCount; // column * ((1f / spanCount) * spacing)

//			Log.d("zwk", "left -----" + outRect.left);
//			outRect.right = spacing - (column + 1) * spacing / spanCount; // spacing - (column + 1) * ((1f /    spanCount) * spacing)
//			Log.d("zwk", "right -----" + outRect.right);

			if (position >= spanCount) {
				outRect.top = spacing; // item top
			}

			if (position % spanCount == 0) {
				outRect.left = 0;
				outRect.right = spacing / 2;
			} else if (position + 1 % spanCount == 0) {
				outRect.left = spacing / 2;
				outRect.right = 0;
			} else {
				outRect.left = spacing / 2;
				outRect.right = spacing / 2;
			}


		}
	}
}

